本人不是專職開發,有錯誤還麻煩告知....(怕錯很大
這幾年講到軟體開發首先會想到DevOps、Scrum敏捷式開發
DevOps是一種重視「軟體開發人員」和「IT運維技術人員」之間溝通合作的文化、運動或慣例。透過自動化「軟體交付」和「架構變更」的流程,來使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。
什麼是 DevOps ?
https://ithelp.ithome.com.tw/articles/10184557
情境
R&D開發完後把檔案放到版本控制(SVN),使用自動佈署(Jenkins),在測試環境發佈,QA(Selenium)和資安(OWASP zap)測試完後等離峰時間發佈到正式環境,先至將第一台設備從服務負載(F5)下線,上版時一併加上log監控(ELK)、效能監控(Zabbix)、防火牆規則,R&D、QA、IT各自檢查功能、效能。整個流程彼此緊密相互合作,因此會搭配敏捷式開發,時刻追蹤進度
更強調程式設計師團隊與業務專家之間的緊密共同作業、面對面的溝通、頻繁交付新的軟體版本、緊湊而自我組織型的團隊
網頁簡易的方式就是避免OWASP,但還是會遇到不能改程式的情況,這時候只能乖乖用WAF,Apache + mod_security,nginx-waf
軟體開發的過程中,確保由不同人所編輯的同一程式檔案都得到同步。SVN,github,gitlab...
很容易出包的一塊,QA測試過A版本,結果CM沒同步好上版時弄成B版本,因此隨時同步資訊是很重要的 (像是在Jira上標註更改了什麼,目前與那些功能介接測試正常...
像java、dotnet、lib函式庫、python套件...,缺少了程式就無法運行,常遇到就是R&D加了一個新的py檔,執行就醫直出現缺少相依套件,然後防火牆又鎖住不能更新,就準備退版了。
因為這些問題非常多(有時安全性更新也會影響,所以很多廠商打死不升級...怕停擺),所以 Docker開始熱門,把相依環境跟程式包再一起發布,檔案小啟動速度快,沒有VM肥大的問題,也一併處理耦合性問題。
跟相依元件一樣原理,不想要一個程式通通包再一起,開發困難(大家一起修改同一份文件,綁手綁腳),維護困難(幾萬行在一個文件,交接的人要找問題要花很長的時間看)。
解耦後就變成A造輪子,B造引擎,C造方向盤,大家都用API互相串接,方便開發及找問題,這架構會比較浪費資源,用docker可以減輕副作用,產生了微服務的概念。
圖片取至https://www.hexiao-o.com/2017/01/11/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B/
可以參考今年邦友寫的.Net微服務輕旅行
https://ithelp.ithome.com.tw/articles/10193884